package cn.iocoder.yudao.module.project.service.kisbom;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.project.controller.admin.kisbom.vo.*;
import cn.iocoder.yudao.module.project.controller.admin.order.vo.PreparationVO;
import cn.iocoder.yudao.module.project.dal.dataobject.kisbom.KisBomDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.data.repository.query.Param;

/**
 * bom数据 Service 接口
 *
 * @author 芋道源码
 */
public interface KisBomService {

    /**
     * 创建bom数据
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createKisBom(@Valid KisBomSaveReqVO createReqVO);

    /**
     * 更新bom数据
     *
     * @param updateReqVO 更新信息
     */
    void updateKisBom(@Valid KisBomSaveReqVO updateReqVO);

    /**
     * 删除bom数据
     *
     * @param id 编号
     */
    void deleteKisBom(String id);

    /**
     * 获得bom数据
     *
     * @param id 编号
     * @return bom数据
     */
    KisBomDO getKisBom(String id);

    /**
     * 获得bom数据分页
     *
     * @param pageReqVO 分页查询
     * @return bom数据分页
     */
    PageResult<KisBomDO> getKisBomPage(KisBomPageReqVO pageReqVO);




    /**
     * 查询已经存在的bom数据
     * @param params
     * @return
     */
    List<KisBomDO> selectSavedList(Map<String, Object> params);

    void insertRecord(List<KisBomDO> insertList);

    void updateRecord(List<KisBomDO> updateList);

    List<String> selectTypeList(String type);

    List<PreparationVO> selectCodeListByType(String type);

    Long countBomList(Map<String, Object> params);

    List<KisBomRespVO> selectBomList(Map<String, Object> params);

    int deleteBomByType(String type);

}